<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /*
         * 为了防止js主进程不阻塞，协调事件、用户交互、脚本、UI 渲染和网络处理等行为，事件循环应运而生
         * 事件循环分为：基于浏览器上下文和基于 Web Worker，两者的运行时相互独立的
         * 事件循环时通过任务队列来进行协调处理，在一个时间循环中可包含多个任务队列，每个任务队列仅包含来自同一个任务源的执行任务
         * 时间循环中，将每次循环操作称为 tick，关键流程如下：1.检查tick中优先进入队列的任务并执行。2.检查是否存在微任务，如果有则依次执行直至清空队列。3.更新render并重复执行以上流程
         * js任务可分为同步任务和异步任务，同步任务在主线程的调用栈中执行，在主线程之外管理着一个任务队列，一旦主线程上的同步任务执行完毕，将读取任务队列并将异步任务加入到调用栈。
        */
    </script>
</body>
</html>